package negocio;

import java.util.Random;

public class RoboInimigo extends Pergonagem{
    private float dirTiroX, dirTiroY=20;
    private Random rTiro = new Random();
    public RoboInimigo(Jogo jogo, int posX, int posY, Natureza natureza){
        super("","imagens/robo-inimigo.png",jogo, posX, posY, natureza);
        
    }
    
    @Override
    protected void logicaMovimento() {
       if (jogo.getJogador().getRetangulo().getX() > posicao.x) {
           posicao.dX = (float) 0.5;
           dirTiroX = 10;
           dirTiroY = 0;
           if (rTiro.nextInt(100) % 50 == 0) {
               atirar(dirTiroX, dirTiroY);
           }

       } else {
           posicao.dX = (float) -0.5;
           dirTiroX = -10;
           dirTiroY = 0;
          if (rTiro.nextInt(100) % 50 == 0) {
               atirar(dirTiroX, dirTiroY);
           }
       }
       if (jogo.getJogador().getRetangulo().getY() > posicao.y) {
           posicao.dY = (float) 0.5;
           dirTiroX = 0;
           dirTiroY = 10;
          if (rTiro.nextInt(100) % 50 == 0) {
               atirar(dirTiroX, dirTiroY);
           }
       } else {
           posicao.dY = (float) -0.5;
           dirTiroX = 0;
           dirTiroY = -10;
           if (rTiro.nextInt(100) % 50 == 0) {
               atirar(dirTiroX, dirTiroY);
           }
       }
   }

   public void atirar(float dx, float dy) {
       jogo.desenhos.add(new TiroInimigo(jogo, posicao.x, posicao.y, dx, dy, Natureza.FANTASMA));
   }

    public int getPoder() {
        return 100;
    }
    
    @Override
    public void colidiuCom(Animado colidido) {
        Posicao outro = colidido.posicao;
        if (natureza != Natureza.CHAO && natureza != Natureza.FANTASMA && colidido.natureza != Natureza.FANTASMA) {
            if(colidido.equals(jogo.getJogador())){
               colidido.atinge(1); 
            }else if (Math.round(posicao.y + getHeight() - posicao.dY) <= Math.round(outro.y - outro.dY)) {
                // colisao por cima
                this.posicao.y = outro.y - this.getHeight();
                this.posicao.dY = (coefRestituicao * colidido.getMassa() * (outro.dY - posicao.dY) + (getMassa() * posicao.dY) + (colidido.getMassa() * outro.dY)) / (getMassa() + colidido.getMassa());
            } else if (Math.round(posicao.y - posicao.dY) >= Math.round(outro.y + colidido.getHeight() + posicao.dY)) {
                // colisao por baixo
                this.posicao.y = outro.y + colidido.getHeight();
                this.posicao.dY = (coefRestituicao * colidido.getMassa() * (outro.dY - posicao.dY) + (getMassa() * posicao.dY) + (colidido.getMassa() * outro.dY)) / (getMassa() + colidido.getMassa());
            } else if (Math.round(posicao.x + getWidth() - posicao.dX) <= Math.round(outro.x - outro.dX)) {
                // colisao pela esquerda
                this.posicao.x = outro.x - getWidth();
                this.posicao.dX = (coefRestituicao * colidido.getMassa() * (outro.dX - posicao.dX) + (getMassa() * posicao.dX) + (colidido.getMassa() * outro.dX)) / (getMassa() + colidido.getMassa());
            } else if (Math.round(posicao.x - posicao.dX + .5f) >= Math.round(outro.x + colidido.getWidth() - outro.dX)) {
                // colisao pela direita
                this.posicao.x = outro.x + colidido.getWidth();
                this.posicao.dX = (coefRestituicao * colidido.getMassa() * (outro.dX - posicao.dX) + (getMassa() * posicao.dX) + (colidido.getMassa() * outro.dX)) / (getMassa() + colidido.getMassa());
            }
        }
        
        
        
    }
    @Override
    public int getVidaInicial() {
        return 100;
    }
    
}
